package com.zac.coroutine.algorithm.leetcode.others;

import java.util.ArrayList;
import java.util.List;

/**
 * author zac
 * date 2024/11/21
 * 118. 杨辉三角
 * 简单
 * 给定一个非负整数 numRows，生成「杨辉三角」的前 numRows 行。
 * <p>
 * 在「杨辉三角」中，每个数是它左上方和右上方的数的和。
 */
public class YangHuiTriangle {

    public static void main(String[] args) {
    }

    public List<List<Integer>> generate(int numRows) {
        ArrayList<List<Integer>> yanghui = new ArrayList<>();
        List<Integer> firstRow = new ArrayList<>();
        firstRow.add(1);
        yanghui.add(firstRow);
        List<Integer> lastRow = firstRow;
        for (int rows = numRows; rows > 1; rows--) {
            yanghui.add(lastRow = cal(lastRow));
        }

        return yanghui;
    }


    public static ArrayList<Integer> cal(List<Integer> lastRow) {
        ArrayList<Integer> nextRow = new ArrayList<>();
        nextRow.add(1);
        for (int i = 0; i < lastRow.size() - 1; i++) {
            nextRow.add(lastRow.get(i) + lastRow.get(i + 1));
        }
        nextRow.add(1);
        return nextRow;
    }

}
